package Day11.Demo01;

/**
 * @author hyhWTX
 * @version 1.0
 * @date 2022年05月10日 20:43
 */


public class Demo01Final {
    //修饰一个局部变量
    public static void main(String[] args) {
        int num1 =10;
        System.out.println(num1);
        num1 = 20;
        System.out.println(num1);

        //一旦使用final用来修饰局部变量，那么这个变量就不能进行更改
        //一次赋值，始终不变

        final int num2 = 200;
        System.out.println(num2);
        //错误写法
        //num2 = 300;


        //正确写法，只要保证有唯一一次的赋值即可
        final int num3;
        num3 = 30;

        //对于基本类型而说，不可变说的是变量当中的数据不可改变
        //对于引用类型来说，不可变说的是变量当中的地址值不可改变
        Student stu1 = new Student("张三");
        System.out.println(stu1);
        System.out.println(stu1.getName());
        stu1 = new Student("李四");
        System.out.println(stu1);
        System.out.println(stu1.getName());
        System.out.println("===============");
        final Student stu2 = new Student("高圆圆");
        System.out.println(stu2);
        System.out.println(stu2.getName());
        //错误写法，final的引用类型变量，其中的地址不可改变
//        stu2 = new Student("王麻子");
        stu2.setName("赵又廷");
        System.out.println(stu2);
        System.out.println(stu2.getName());
        //final的引用类型变量地址值不能改变，但是地址所指向的那个对象是可以改变的
    }
}
